import os
import pandas as pd
from scripts.model_training import train_and_save_model, retrain_model_with_new_data, load_model

# 定义测试数据
test_data = [
    {'skills': 'Java', 'education': '本科', 'experience': '1年', 'major': '计算机科学', 'target': '岗位G'},
    {'skills': 'Python', 'education': '硕士', 'experience': '2年', 'major': '数据科学', 'target': '岗位C'},
    {'skills': 'SQL', 'education': '本科', 'experience': '无', 'major': '数据库管理', 'target': '岗位C'}
]

def predict_students(model, students):
    """预测学生岗位"""
    if model is None:
        print("模型未加载成功，无法预测")
        return
    
    # 转换为DataFrame
    df = pd.DataFrame(students)
    
    # 预测
    predictions = model.predict(df)
    
    # 打印结果
    for i, (student, pred) in enumerate(zip(students, predictions)):
        print(f"学生 {i+1} 预测结果: {pred}")
        
    return predictions

# 主函数
def main():
    # 检查是否存在模型文件，如果存在则删除
    model_path = 'job_recommendation_model.pkl'
    if os.path.exists(model_path):
        os.remove(model_path)
        print(f"已删除现有模型文件: {model_path}")
    
    print("\n===== 第一阶段: 使用new_student_job_data.csv训练模型 =====")
    # 这里我们需要修改train_and_save_model函数或者创建一个新函数来使用指定的数据文件
    # 为了简化，我们直接调用retrain_model_with_new_data函数
    model1 = retrain_model_with_new_data('new_student_job_data.csv')
    print("\n使用初始模型预测:")
    predictions1 = predict_students(model1, test_data)
    
    print("\n===== 第二阶段: 使用expanded_student_job_data.csv复训模型 =====")
    model2 = retrain_model_with_new_data('expanded_student_job_data.csv')
    print("\n使用复训后模型预测:")
    predictions2 = predict_students(model2, test_data)
    
    # 对比结果
    print("\n===== 结果对比 =====")
    if len(predictions1) == len(predictions2):
        for i, (pred1, pred2) in enumerate(zip(predictions1, predictions2)):
            if pred1 == pred2:
                print(f"学生 {i+1}: 复训前后预测结果一致 ({pred1})")
            else:
                print(f"学生 {i+1}: 复训前({pred1}) -> 复训后({pred2})")
    
if __name__ == '__main__':
    main()